#include<iostream>
#include<cstring>
#include<queue>

using namespace std;

const int N=210;

char g[N][N];
int d[N][N];
int n,m,T,t1,t2;
queue<pair<int,int>> q;

int bfs(int x,int y)
{
    while(q.size()) q.pop();
    q.push({x,y});
    int dx[]={1,0,-1,0},dy[]={0,1,0,-1};
    while(q.size())
    {
        pair<int,int> t=q.front();
        q.pop();
        for(int i=0;i<4;i++)
        {
            int x=t.first+dx[i],y=t.second+dy[i];
            if(x>=0 && x<n && y>=0 && y<m && g[x][y] != '#' && d[x][y] == 0)
            {
                q.push({x,y});
                d[x][y]=d[t.first][t.second]+1;
            }
        }
    }
    return d[t1][t2];
}

int main()
{
    cin>>T;
    while(T--)
    {
        memset(d,0,sizeof d);
        int x,y;
        scanf("%d%d",&n,&m);
        for(int i=0;i<n;i++)
        {
            for(int j=0;j<m;j++)
            {
                cin>>g[i][j];
                if(g[i][j] == 'S')
                {
                    x=i;
                    y=j;
                }
                if(g[i][j] == 'E')
                {
                    t1=i;
                    t2=j;
                }
            }
        }
        int t=bfs(x,y);
        if(t) cout<<t<<'\n';
        else cout<<"oop!"<<'\n';
    }

    return 0;
}
